#include "BulletSoftBody/btDeformableLinearElasticityForce.h"
#ifdef __cplusplus
extern "C" {
#endif
btDeformableLinearElasticityForce* bullet_NewbtDeformableLinearElasticityForce(){
	btDeformableLinearElasticityForce* wrap_out = new btDeformableLinearElasticityForce();
	return wrap_out;
}

btDeformableLinearElasticityForce* bullet_NewbtDeformableLinearElasticityForce1(double mu,double lambda,double damping_alpha,double damping_beta){
	btScalar c_arg_mu=mu;
	btScalar c_arg_lambda=lambda;
	btScalar c_arg_damping_alpha=damping_alpha;
	btScalar c_arg_damping_beta=damping_beta;
	btDeformableLinearElasticityForce* wrap_out = new btDeformableLinearElasticityForce(c_arg_mu,c_arg_lambda,c_arg_damping_alpha,c_arg_damping_beta);
	return wrap_out;
}

double bullet_btDeformableLinearElasticityForce_elasticEnergyDensity(btDeformableLinearElasticityForce* c_this,btSoftBody::TetraScratch* s){
	btSoftBody::TetraScratch const& c_arg_s=(btSoftBody::TetraScratch const&)(*s);
	double c_out = c_this->elasticEnergyDensity(c_arg_s);
	double wrap_out = (c_out);
	return wrap_out;
}

void bullet_btDeformableLinearElasticityForce_firstPiola(btDeformableLinearElasticityForce* c_this,btSoftBody::TetraScratch* s,btMatrix3x3* P){
	btSoftBody::TetraScratch const& c_arg_s=(btSoftBody::TetraScratch const&)(*s);
	btMatrix3x3& c_arg_P=(btMatrix3x3&)(*P);
	c_this->firstPiola(c_arg_s,c_arg_P);
}

void bullet_btDeformableLinearElasticityForce_firstPiolaDampingDifferential(btDeformableLinearElasticityForce* c_this,btSoftBody::TetraScratch* s,btMatrix3x3* dF,btMatrix3x3* dP){
	btSoftBody::TetraScratch const& c_arg_s=(btSoftBody::TetraScratch const&)(*s);
	btMatrix3x3 const& c_arg_dF=(btMatrix3x3 const&)(*dF);
	btMatrix3x3& c_arg_dP=(btMatrix3x3&)(*dP);
	c_this->firstPiolaDampingDifferential(c_arg_s,c_arg_dF,c_arg_dP);
}

void bullet_btDeformableLinearElasticityForce_firstPiolaDifferential(btDeformableLinearElasticityForce* c_this,btSoftBody::TetraScratch* s,btMatrix3x3* dF,btMatrix3x3* dP){
	btSoftBody::TetraScratch const& c_arg_s=(btSoftBody::TetraScratch const&)(*s);
	btMatrix3x3 const& c_arg_dF=(btMatrix3x3 const&)(*dF);
	btMatrix3x3& c_arg_dP=(btMatrix3x3&)(*dP);
	c_this->firstPiolaDifferential(c_arg_s,c_arg_dF,c_arg_dP);
}

double bullet_btDeformableLinearElasticityForce_GetFieldOfM_damping_alpha(btDeformableLinearElasticityForce* c_this){
	return (double)(c_this->m_damping_alpha);
}

double bullet_btDeformableLinearElasticityForce_GetFieldOfM_damping_beta(btDeformableLinearElasticityForce* c_this){
	return (double)(c_this->m_damping_beta);
}

double bullet_btDeformableLinearElasticityForce_GetFieldOfM_E(btDeformableLinearElasticityForce* c_this){
	return (double)(c_this->m_E);
}

double bullet_btDeformableLinearElasticityForce_GetFieldOfM_lambda(btDeformableLinearElasticityForce* c_this){
	return (double)(c_this->m_lambda);
}

double bullet_btDeformableLinearElasticityForce_GetFieldOfM_mu(btDeformableLinearElasticityForce* c_this){
	return (double)(c_this->m_mu);
}

double bullet_btDeformableLinearElasticityForce_GetFieldOfM_nu(btDeformableLinearElasticityForce* c_this){
	return (double)(c_this->m_nu);
}

void bullet_btDeformableLinearElasticityForce_setDamping(btDeformableLinearElasticityForce* c_this,double damping_alpha,double damping_beta){
	btScalar c_arg_damping_alpha=damping_alpha;
	btScalar c_arg_damping_beta=damping_beta;
	c_this->setDamping(c_arg_damping_alpha,c_arg_damping_beta);
}

void bullet_btDeformableLinearElasticityForce_setLameParameters(btDeformableLinearElasticityForce* c_this,double mu,double lambda){
	btScalar c_arg_mu=mu;
	btScalar c_arg_lambda=lambda;
	c_this->setLameParameters(c_arg_mu,c_arg_lambda);
}

void bullet_btDeformableLinearElasticityForce_setPoissonRatio(btDeformableLinearElasticityForce* c_this,double nu){
	btScalar c_arg_nu=nu;
	c_this->setPoissonRatio(c_arg_nu);
}

void bullet_btDeformableLinearElasticityForce_setYoungsModulus(btDeformableLinearElasticityForce* c_this,double E){
	btScalar c_arg_E=E;
	c_this->setYoungsModulus(c_arg_E);
}

void bullet_btDeformableLinearElasticityForce_updateLameParameters(btDeformableLinearElasticityForce* c_this){
	c_this->updateLameParameters();
}

void bullet_btDeformableLinearElasticityForce_updateYoungsModulusAndPoissonRatio(btDeformableLinearElasticityForce* c_this){
	c_this->updateYoungsModulusAndPoissonRatio();
}

#ifdef __cplusplus
}
#endif
